function received_signal = apply_channel(transmitted_signal, channel_gain, snr_dB)
% apply_channel - 将发送信号通过无线信道
%
% 输入参数:
%   transmitted_signal - 发送信号
%   channel_gain       - 信道增益（路径损耗模型）
%   snr_dB             - 信噪比(dB)
%
% 输出参数:
%   received_signal    - 接收信号

% 应用信道增益
received_signal = channel_gain * transmitted_signal;

% 计算信号功率
signal_power = mean(abs(received_signal).^2);

% 将SNR从dB转换为线性比例
snr_linear = 10^(snr_dB/10);

% 计算所需的噪声功率
noise_power = signal_power / snr_linear;

% 生成复高斯白噪声
noise = sqrt(noise_power/2) * (randn(size(received_signal)) + 1i*randn(size(received_signal)));

% 添加噪声到信号
received_signal = received_signal + noise;

% 添加瑞利衰落
% 在实际的NOMA系统中，瑞利衰落是一个重要的考虑因素
fading_simulation = true;
if fading_simulation
    % 生成瑞利衰落系数
    h = (randn + 1i*randn) / sqrt(2);
    
    % 应用瑞利衰落
    received_signal = h * received_signal;
    
    % 在实际系统中，接收机需要估计信道状态信息(CSI)
    % 这里为简化，假设接收机拥有完美的CSI
    % 使用信道状态信息进行信道均衡
    received_signal = received_signal / h;
end

% 添加相位噪声（模拟本振不理想）
phase_noise_std = 0.01;  % 相位噪声标准差（弧度）
phase_noise = phase_noise_std * randn(1, 1);
received_signal = received_signal * exp(1i * phase_noise);

end 